/**
 * 此文件是用来对axios进行二次封装的
 * 因为很多地方都要向服务器发送请求获取数据，请求的目标地址服务器是一样的，不能的功能路径是不一样的，所以需要进行统一的封装，方便后期的维护
 */

// 1. 引入axios
import axios from 'axios'
import 'nprogress/nprogress.css'  // 第三模块使用的时候，不用写相对路径./
import NProgress from 'nprogress'
// 2. 创建对象，统一设置
const ajax = axios.create({
  baseURL: 'http://39.98.123.211/',
  timeout:5000 // js是以毫秒计时的 1s = 1000ms
})
// 3. 设置请求拦截器  只要发送请求就会先走请求拦截器
ajax.interceptors.request.use(config => {
  NProgress.start()
  return config // 一定要返回这个config配置项
})
// 4. 设置响应拦截器
ajax.interceptors.response.use(response => {
  NProgress.done()
  return response.data // 里面的很多数据当中的data才是我们想要的服务器响应回来的数据
  // return response
}, error => {
  // console.log(error.message);
  // return error.message // 如果返回的是普通的值 而非promise实例对象的话，默认也会走成功的回调，不会走到失败的回调里面，所以需要返回一个promise值
  NProgress.done()
  return Promise.reject(new Error(error.message))
})
// 5. 导出对象
export default ajax

